<html>
	<head>
		<meta charset="utf-8"></meta>
		<title>BValue</title>
		<link href="./style.css" rel="stylesheet" type="text/css"/>
	</head>
	<body>
		<div class="class" name="BValue">
			<h1>BValue</h1>
			<p id="resume">BValue是值类，用于存放任何数据。<a href="#desc">详细</a></p><h2>public</h2>
			<table id="public">
				<tr><td align="right">inline </td><td><a href="#BValue()">BValue</a>();</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(const BValue&)">BValue</a>(const BValue&amp; other);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(const T&)">BValue</a>(const T&amp; value);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(T*)">BValue</a>(T* ptr);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(const T*)">BValue</a>(const T* ptr);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(const T&, const BThing*)">BValue</a>(const T&amp; value, const BThing* annex);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(T*, const BThing*)">BValue</a>(T* ptr, const BThing* annex);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(const T*, const BThing*)">BValue</a>(const T* ptr, const BThing* annex);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(const T&)">BValue</a>(const T&amp; thing);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(T*,bool)">BValue</a>(T* thing, bool weak = false);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(const T*,bool)">BValue</a>(const T* thing, bool weak = false);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(const T&, const BThing*)">BValue</a>(const T&amp; thing, const BThing* annex);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(T*, const BThing*)">BValue</a>(T* thing, const BThing* annex);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(const T*, const BThing*)">BValue</a>(const T* thing, const BThing* annex);</td></tr>
				<tr><td align="right">inline </td><td><a href="#BValue(const BHolder<T>&)">BValue</a>(const BHolder&lt;T&gt;&amp; holder);</td></tr>
				<tr><td align="right">inline </td><td><a href="#~BValue()">~BValue</a>();</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#weak() const">weak</a>() const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#empty() const">empty</a>() const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#valid() const">valid</a>() const;</td></tr>
				<tr><td align="right">inline void </td><td><a href="#clear()">clear</a>();</td></tr>
				<tr><td align="right">inline const char* </td><td><a href="#type() const">type</a>() const;</td></tr>
				<tr><td align="right">inline const void* </td><td><a href="#data() const">data</a>() const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#is() const">is</a>() const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#is() const">is</a>() const;</td></tr>
				<tr><td align="right">inline const T* </td><td><a href="#annex() const">annex</a>() const;</td></tr>
				<tr><td align="right">inline const BThing* </td><td><a href="#annex() const">annex</a>() const;</td></tr>
				<tr><td align="right">inline T&amp; </td><td><a href="#fill()">fill</a>();</td></tr>
				<tr><td align="right">inline T&amp; </td><td><a href="#fill()">fill</a>();</td></tr>
				<tr><td align="right">inline BValue&amp; </td><td><a href="#refer()">refer</a>();</td></tr>
				<tr><td align="right">inline const BValue&amp; </td><td><a href="#refer() const">refer</a>() const;</td></tr>
				<tr><td align="right">inline </td><td><a href="#operator const T& () const">operator const T&amp; </a>() const;</td></tr>
				<tr><td align="right">inline </td><td><a href="#operator T& () const">operator T&amp; </a>() const;</td></tr>
				<tr><td align="right">inline </td><td><a href="#operator T& () const">operator T&amp; </a>() const;</td></tr>
				<tr><td align="right">inline </td><td><a href="#operator const T& () const">operator const T&amp; </a>() const;</td></tr>
				<tr><td align="right">inline </td><td><a href="#operator T* () const">operator T* </a>() const;</td></tr>
				<tr><td align="right">inline </td><td><a href="#operator const T* () const">operator const T* </a>() const;</td></tr>
				<tr><td align="right">inline </td><td><a href="#operator T* () const">operator T* </a>() const;</td></tr>
				<tr><td align="right">inline </td><td><a href="#operator const T* () const">operator const T* </a>() const;</td></tr>
				<tr><td align="right">inline const BValue&amp; </td><td><a href="#operator = (const T&)">operator = </a>(const T&amp; value);</td></tr>
				<tr><td align="right">inline const BValue&amp; </td><td><a href="#operator = (T*)">operator = </a>(T* ptr);</td></tr>
				<tr><td align="right">inline const BValue&amp; </td><td><a href="#operator = (const T*)">operator = </a>(const T* ptr);</td></tr>
				<tr><td align="right">inline const BValue&amp; </td><td><a href="#operator = (const T&)">operator = </a>(const T&amp; thing);</td></tr>
				<tr><td align="right">inline const BValue&amp; </td><td><a href="#operator = (T*)">operator = </a>(T* thing);</td></tr>
				<tr><td align="right">inline const BValue&amp; </td><td><a href="#operator = (const T*)">operator = </a>(const T* thing);</td></tr>
				<tr><td align="right">inline const BValue&amp; </td><td><a href="#operator = (const BHolder<T>&)">operator = </a>(const BHolder&lt;T&gt;&amp; holder);</td></tr>
				<tr><td align="right">inline const BValue&amp; </td><td><a href="#operator = (const BValue&)">operator = </a>(const BValue&amp; other);</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator == (const T*) const">operator == </a>(const T* ptr) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator == (const T&) const">operator == </a>(const T&amp; value) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator == (T*) const">operator == </a>(T* thing) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator == (const T*) const">operator == </a>(const T* thing) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator == (const T&) const">operator == </a>(const T&amp; thing) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator == (const BHolder<T>&) const">operator == </a>(const BHolder&lt;T&gt;&amp; holder) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator != (const T*) const">operator != </a>(const T* ptr) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator != (const T&) const">operator != </a>(const T&amp; value) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator != (const BHolder<T>&) const">operator != </a>(const BHolder&lt;T&gt;&amp; holder) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator != (T*) const">operator != </a>(T* thing) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator != (const T*) const">operator != </a>(const T* thing) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator != (const T&) const">operator != </a>(const T&amp; thing) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator == (const BValue&) const">operator == </a>(const BValue&amp; other) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator != (const BValue&) const">operator != </a>(const BValue&amp; other) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator > (const BValue&) const">operator &gt; </a>(const BValue&amp; other) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator >= (const BValue&) const">operator &gt;= </a>(const BValue&amp; other) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator < (const BValue&) const">operator &lt; </a>(const BValue&amp; other) const;</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#operator <= (const BValue&) const">operator &lt;= </a>(const BValue&amp; other) const;</td></tr>
			</table>
			<div id="desc">
				<h2>详细介绍：</h2>
				<p>
					 BValue是值类，用于存放任何数据。应用非常广泛，是此框架的核心基础类。其将数据分为两种，一种是东西（BThing），另一种是不是东西。如果放入的是个东西，那么值会对其引用计数加一，即BValue对东西是有占用行为的，这一点与BHolder相同。对于不是东西，只记录其本值。 
					<br/>
				</p><p>基本用法如下： </p><pre>BValue vstr = new BString("abc");//直接占用这个字符串。
BValue vstr1 = (const BString&amp;)vstr;//从vstr中取得字符串引用，复制出一字符串放入vstr1。
BValue vcstr = "123";//只记录c字符串的指针地址。
BValue vnum = 123.456;//复制一份双精度浮点值。
BValue vrect = BRect(1, 2, 3, 4);//复制一份方框数据，由于其尺寸大于指针，需要申请动态内存。</pre><p>对两个值的大小比较是直接当作数据块来比较的，只是单纯的分辨大小，用于需要排序的情况下。</p><p>有时需要指定附件，要注意附件不会被占用，也就无法保证其是有效的。</p>
			</div>
			<h2 id="docs">成员文档：</h2>
			<div id="BValue()">
				<h3>inline BValue();</h3>
				<p>初始化一个空的值。</p>
			</div>
			<div id="BValue(const BValue&)">
				<h3>inline BValue(const BValue&amp; other);</h3>
				<p>初始化一个值，并从指定值那里获得内容。</p>
			</div>
			<div id="BValue(const T&)">
				<h3>inline BValue(const T&amp; value);</h3>
				<p>构建一个值，参数value作为其内容。此处的value不是东西。</p>
			</div>
			<div id="BValue(T*)">
				<h3>inline BValue(T* ptr);</h3>
				<p>构建一个值，参数指针ptr作为其内容。此处的ptr指针不是东西。</p>
			</div>
			<div id="BValue(const T*)">
				<h3>inline BValue(const T* ptr);</h3>
				<p>构建一个值，参数常量指针ptr作为其内容。此处的ptr指针不是东西。</p>
			</div>
			<div id="BValue(const T&, const BThing*)">
				<h3>inline BValue(const T&amp; value, const BThing* annex);</h3>
			</div>
			<div id="BValue(T*, const BThing*)">
				<h3>inline BValue(T* ptr, const BThing* annex);</h3>
			</div>
			<div id="BValue(const T*, const BThing*)">
				<h3>inline BValue(const T* ptr, const BThing* annex);</h3>
			</div>
			<div id="BValue(const T&)">
				<h3>inline BValue(const T&amp; thing);</h3>
			</div>
			<div id="BValue(T*,bool)">
				<h3>inline BValue(T* thing, bool weak = false);</h3>
				<p>构建一个值，指定一个东西作为其内空，weak为false则这个东西会被占用，否则不被占用。</p>
			</div>
			<div id="BValue(const T*,bool)">
				<h3>inline BValue(const T* thing, bool weak = false);</h3>
				<p>
					 构建一个值，指定一个常量东西作为其内空，weak为false则这个东西会被占用，否则不被占用。 
					<br/>
					<text>注意，从此值中取值是无法取出非常量的东西。</text><br/>
				</p>
			</div>
			<div id="BValue(const T&, const BThing*)">
				<h3>inline BValue(const T&amp; thing, const BThing* annex);</h3>
			</div>
			<div id="BValue(T*, const BThing*)">
				<h3>inline BValue(T* thing, const BThing* annex);</h3>
			</div>
			<div id="BValue(const T*, const BThing*)">
				<h3>inline BValue(const T* thing, const BThing* annex);</h3>
			</div>
			<div id="BValue(const BHolder<T>&)">
				<h3>inline BValue(const BHolder&lt;T&gt;&amp; holder);</h3>
				<p>构建一个值，从指定的占用器内取得东西作为内容。这个东西会被引用加一。</p>
			</div>
			<div id="~BValue()">
				<h3>inline ~BValue();</h3>
				<p>析构此值，此方法调用clear()方法清空内容，清空操作可能会删除东西。若内容不是东西则直接删除。</p>
			</div>
			<div id="weak() const">
				<h3>inline bool weak() const;</h3>
				<p>判断此值是否不对东西进行占用。</p>
			</div>
			<div id="empty() const">
				<h3>inline bool empty() const;</h3>
				<p>判断此值是否为空的。</p>
			</div>
			<div id="valid() const">
				<h3>inline bool valid() const;</h3>
				<p>判断此值是否包含内容，即非空。</p>
			</div>
			<div id="clear()">
				<h3>inline void clear();</h3>
				<p>清空值内容，如果内容是东西且没人占用它，则删除这个东西。如果内容不是东西，则删除它。</p>
			</div>
			<div id="type() const">
				<h3>inline const char* type() const;</h3>
				<p>获得值中内容的类型字符串。注意：此字符串是编译级的，由编译器生成。</p>
			</div>
			<div id="data() const">
				<h3>inline const void* data() const;</h3>
				<p>获得数值指针，使用时需要明确知道此值中内容的类型，当然不是东西。</p>
			</div>
			<div id="is() const">
				<h3>inline bool is() const;</h3>
				<p>判断此值中内容的类型。</p>
			</div>
			<div id="is() const">
				<h3>inline bool is() const;</h3>
			</div>
			<div id="annex() const">
				<h3>inline const T* annex() const;</h3>
				<p>将附件东西转换为指定的类型，注意：因为附件不会被占用，需要明确知道此附件当下是有效的。</p>
			</div>
			<div id="annex() const">
				<h3>inline const BThing* annex() const;</h3>
			</div>
			<div id="fill()">
				<h3>inline T&amp; fill();</h3>
				<p>使用此值中充满指定的内容，如果没有指定的类型的内容则清空它并生成一个默认的内容。</p><p>返回值为指定类型的引用，这是最常用的方式。</p>
			</div>
			<div id="fill()">
				<h3>inline T&amp; fill();</h3>
			</div>
			<div id="refer()">
				<h3>inline BValue&amp; refer();</h3>
				<p>当值的内容是个值的情况下，此方法返回其最低层的值。值套值的用法常用于脚本变量的引用机制。示例如下：</p><pre>BValue value0 = 123;
BValue value1 = &amp;value0;
int a = value1;
int b = value1.refer();
//上面的a和b都为123。</pre>
			</div>
			<div id="refer() const">
				<h3>inline const BValue&amp; refer() const;</h3>
				<p>值的解引用方法。</p>
			</div>
			<div id="operator const T& () const">
				<h3>inline operator const T&amp; () const;</h3>
				<p>取得内容的引用为常量对象。</p>
			</div>
			<div id="operator T& () const">
				<h3>inline operator T&amp; () const;</h3>
				<p>取得内容的引用。</p>
			</div>
			<div id="operator T& () const">
				<h3>inline operator T&amp; () const;</h3>
			</div>
			<div id="operator const T& () const">
				<h3>inline operator const T&amp; () const;</h3>
			</div>
			<div id="operator T* () const">
				<h3>inline operator T* () const;</h3>
				<p>取得内容的指针形式。</p>
			</div>
			<div id="operator const T* () const">
				<h3>inline operator const T* () const;</h3>
				<p>取得内容的常量指针形式。</p>
			</div>
			<div id="operator T* () const">
				<h3>inline operator T* () const;</h3>
			</div>
			<div id="operator const T* () const">
				<h3>inline operator const T* () const;</h3>
			</div>
			<div id="operator = (const T&)">
				<h3>inline const BValue&amp; operator = (const T&amp; value);</h3>
				<p>赋值为指定的内容，复制value数据。</p>
			</div>
			<div id="operator = (T*)">
				<h3>inline const BValue&amp; operator = (T* ptr);</h3>
				<p>赋值为指定的内容指针。</p>
			</div>
			<div id="operator = (const T*)">
				<h3>inline const BValue&amp; operator = (const T* ptr);</h3>
				<p>赋值为指定的常量内容指针。</p>
			</div>
			<div id="operator = (const T&)">
				<h3>inline const BValue&amp; operator = (const T&amp; thing);</h3>
			</div>
			<div id="operator = (T*)">
				<h3>inline const BValue&amp; operator = (T* thing);</h3>
			</div>
			<div id="operator = (const T*)">
				<h3>inline const BValue&amp; operator = (const T* thing);</h3>
			</div>
			<div id="operator = (const BHolder<T>&)">
				<h3>inline const BValue&amp; operator = (const BHolder&lt;T&gt;&amp; holder);</h3>
				<p>赋值为一个占用器里面的东西，对这个东西进行占用。</p>
			</div>
			<div id="operator = (const BValue&)">
				<h3>inline const BValue&amp; operator = (const BValue&amp; other);</h3>
				<p>赋值为另一个值的内容。</p>
			</div>
			<div id="operator == (const T*) const">
				<h3>inline bool operator == (const T* ptr) const;</h3>
				<p>判断是否等于指定的数据常量指针。</p>
			</div>
			<div id="operator == (const T&) const">
				<h3>inline bool operator == (const T&amp; value) const;</h3>
				<p>判断是否等于指定的数据内容。</p>
			</div>
			<div id="operator == (T*) const">
				<h3>inline bool operator == (T* thing) const;</h3>
				<p>判断是否等于指定的数据指针。</p>
			</div>
			<div id="operator == (const T*) const">
				<h3>inline bool operator == (const T* thing) const;</h3>
			</div>
			<div id="operator == (const T&) const">
				<h3>inline bool operator == (const T&amp; thing) const;</h3>
			</div>
			<div id="operator == (const BHolder<T>&) const">
				<h3>inline bool operator == (const BHolder&lt;T&gt;&amp; holder) const;</h3>
				<p>判断此值中的东西是否同步指定的占用器中的东西。</p>
			</div>
			<div id="operator != (const T*) const">
				<h3>inline bool operator != (const T* ptr) const;</h3>
				<p>判断此值中的数据指针是否不同于指定的指针。</p>
			</div>
			<div id="operator != (const T&) const">
				<h3>inline bool operator != (const T&amp; value) const;</h3>
				<p>判断此值中的数据是否不同于指定的数据。</p>
			</div>
			<div id="operator != (const BHolder<T>&) const">
				<h3>inline bool operator != (const BHolder&lt;T&gt;&amp; holder) const;</h3>
				<p>判断此值中的东西是否不同于指定的占用器中的东西。</p>
			</div>
			<div id="operator != (T*) const">
				<h3>inline bool operator != (T* thing) const;</h3>
				<p>判断此值中的东西是否不同于指定的东西。</p>
			</div>
			<div id="operator != (const T*) const">
				<h3>inline bool operator != (const T* thing) const;</h3>
			</div>
			<div id="operator != (const T&) const">
				<h3>inline bool operator != (const T&amp; thing) const;</h3>
			</div>
			<div id="operator == (const BValue&) const">
				<h3>inline bool operator == (const BValue&amp; other) const;</h3>
				<p>判断此值的内容是否与另一个值的内容相同。</p>
			</div>
			<div id="operator != (const BValue&) const">
				<h3>inline bool operator != (const BValue&amp; other) const;</h3>
				<p>判断此值的内容是否与另一个值的内容不相同。</p>
			</div>
			<div id="operator > (const BValue&) const">
				<h3>inline bool operator &gt; (const BValue&amp; other) const;</h3>
				<p>作为数据块，与另一个值进行大于比较。</p>
			</div>
			<div id="operator >= (const BValue&) const">
				<h3>inline bool operator &gt;= (const BValue&amp; other) const;</h3>
				<p>作为数据块，与另一个值进行大于等于比较。</p>
			</div>
			<div id="operator < (const BValue&) const">
				<h3>inline bool operator &lt; (const BValue&amp; other) const;</h3>
				<p>作为数据块，与另一个值进行小于比较。</p>
			</div>
			<div id="operator <= (const BValue&) const">
				<h3>inline bool operator &lt;= (const BValue&amp; other) const;</h3>
				<p>作为数据块，与另一个值进行小于等于比较。</p>
			</div>
		</div>
	</body>
</html>